home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 017 / ebl306b.arc / BATDOC2.BAT < prev    next >
DOS Batch File  |  1986-11-06  |  31KB  |  826 lines

  1. bat /p * Loading HELP and DOCUMENTATION part 2
  2.  
  3. *           Written by F.Canova 10/5/83 through 07/7/86
  4. *   (c) Copyright 1983, 1985, 1986 by Seaware Corp. all rights reserved.
  5. *    This batch file REQUIRES EBL Version 3 for proper execution!
  6.  
  7.          **** NOTE! NOTE! NOTE! NOTE! ****
  8.  RAM    |* <-----Change 'RAM' to 'BIOS' if PC isn't 100% IBM Compatible!
  9.  
  10.  if %G = .goto. then %G = | goto -%F
  11.  beep type Error! Begin by using BATDOC first!
  12.  type This file is an overlay to BATDOC.
  13.  exit
  14.  
  15. -opt0     %F = opt0     | skip 3
  16. -line0     %F = line0    | skip 2
  17. -line599  %F = line599 | skip 1
  18. -line1405 %F = line1405
  19.     %G = .goto.
  20.     color 8f |type Loading part 1 ...
  21.     batdoc
  22.  
  23. -header * Routine prints general purpose header for help text
  24.     stack.purge            |*  remove any pre-typed keystrokes.
  25.     %n = %i $ 1 ( %i # - 2 ) & . & ( %i $ ( %i # - 1 ) 2 ) |* extract section # from page #
  26.     cls begtype
  27. \17╔══════════════════════════════════════════════════════════════════════════════╗\1F
  28.     \%H                       Page \%n                   \17
  29. ╚══════════════════════════════════════════════════════════════════════════════╝\07
  30.     Press:  PGDN for next page,   PGUP for prev page,  HOME for main menu.
  31.  
  32. end
  33.     return
  34.  
  35. -scroll * Routine accepts key for scrolling help text
  36.     %e = 0
  37.     inkey %k
  38.     if %k = KEY003         goto -opt0 |* Break key
  39.     if %k = KEY01B %i = 0       | goto -line0    |* ESC    key
  40.     if %k = KEY147 %i = 0       | goto -line0    |* Home key
  41.     if %k = KEY149 %i = %i - 1 | cls | goto -line%i |* PgUp key
  42.     if %k = KEY151 %i = %i + 1 | cls | goto -line%i |* PgDn key
  43.     goto -scroll |* ignore any other key.
  44.  
  45.     * ROUTINE TO HAVE USER GIVE A COMMAND A TRY !!
  46.     * %A = string which must match
  47. -tryit
  48.     begtype
  49.  
  50.   Enter your guess!  ;
  51. end
  52. -tryit.loop
  53.     if .%a = . goto -tryit.solved.it |* end of string ?
  54.     %b = %a $ 1 1        |* get 1st letter
  55.     %a = %a $ 2        |* remove it from string
  56. -tryit.retry
  57.     inkey %k        |* get a key.
  58.     if %k = KEY020 type %b; | goto -tryit.loop
  59.     if %k = KEY01B type %b%a| goto -tryit.give.up
  60.     if %k = %b type %k;    | goto -tryit.loop
  61.     beep goto -tryit.retry
  62.  
  63. -tryit.solved.it
  64.     begtype
  65.  
  66.  
  67. EXCELLENT !! - that's exactly it!
  68.  
  69. end
  70.     read Press the ─┘ key to continue to next section.....
  71.     return
  72.  
  73. -tryit.give.up
  74.     begtype
  75.  
  76. That's the answer you needed! (You can "peek" at part of
  77. the answer next time by pressing the space bar if you'd like.)
  78.  
  79. end
  80.     read Press the ─┘ key to continue to next section.....
  81.     return
  82.  
  83. -opt6
  84. -line503 %i = 600
  85. -line600 %H = "How to print" | call -header| begtype
  86.  
  87.   The simplest thing to for Extended Batch Language to do is to print text
  88. on the display.  This is done by either of two commands, TYPE and BEGTYPE.
  89.  
  90.   The TYPE command can be used for something as simple as saying hello!
  91. For example:
  92.  
  93.     BAT TYPE HELLO THERE
  94.  
  95.   This is all that is needed.  This command can be typed directly from DOS
  96. (this is called immediate mode) or be entered into a file such as
  97. "TRIAL.BAT" (this is called direct execution mode).  To execute it as a BAT
  98. program with the file, just type the file's name "TRIAL" from DOS and you
  99. will see the results of the program "HELLO THERE" coming from BAT.
  100. end
  101.     goto -scroll
  102. -line601 call -header | begtype
  103.  
  104.   You can also put DOS variables into this command to display their
  105. contents.  For example, if the "TRIAL.BAT" file contained the line:
  106.  
  107.     BAT TYPE HELLO THERE %1 %2
  108.  
  109.   Then when we start the BAT program from DOS, we might enter:
  110.  
  111.     TRIAL COMPUTER USER
  112.  
  113.   DOS will automatically store the words after the program name into its
  114. variables.  Therefore, in the TYPE command, we will see contents of these
  115. variables on the screen.  The resulting message would be:
  116.  
  117.     HELLO THERE COMPUTER USER
  118. end
  119.     goto -scroll
  120. -line602 call -header | begtype
  121.  
  122.   There is a second method of putting text onto the display.  This is with
  123. the BEGTYPE command.  Although it will not display the contents of
  124. variables, it is very useful for displaying large blocks of text, such as
  125. menus.    For example, if the "TRIAL.BAT" file contains:
  126.  
  127.     BAT BEGTYPE
  128.     This is a large block of text. It is useful for menus. Note
  129.     that Upper/Lower case characters are displayed intact here.
  130.     The block is always ended with "END" in the first column
  131.     after the text finishes.
  132.     END
  133.  
  134.   When executed, the "TRIAL.BAT" program will display:
  135.  
  136.     This is a large block of text. It is useful for menus. Note
  137.     that Upper/Lower case characters are displayed intact here.
  138.     The block is always ended with "END" in the first column
  139.     after the text finishes.
  140. end
  141.     goto -scroll
  142. -line699 %i = 603
  143. -line603 call -header | begtype
  144.  
  145.   There is an additional advantage to using BEGTYPE command.  This command
  146. can also highlight text to the user.  This is done by using the form:
  147. [\\hex] within the text block.
  148.  
  149.   For example if the text block contained \\0F within the text, the result
  150. would be \0F High Intensity Text !  \07.
  151.  
  152.   By choosing different values, the screen attributes can be controlled to
  153. create inverted video, blinking, underlined, and very colorful text.
  154.  
  155.   You can also display the contents of variables by using [\\%Var.name] in
  156. the text block. For instance, if the variable %0 is to be printed, use \\%0
  157. within the text after the BEGTYPE command.
  158.  
  159.   An additional command CLS can be used to clear the display before
  160. printing data.    For instance, the combination "BAT CLS BEGTYPE" is quite
  161. useful for printing menus and text such as this screen.
  162. end
  163.     goto -scroll
  164. -line604
  165.     begtype
  166.  
  167.     \0fNOW IT'S YOUR TURN !!!\07
  168.  
  169.  
  170. If the \0f%4\07 variable contains the word \0fDAY\07, what is the command to display
  171. the words "\0fFUN DAY\07" on the display?
  172.  
  173. end
  174.      %A = "BAT TYPE FUN %4" | Call -tryit
  175. -opt7
  176. -line605  %i = 700
  177. -line700 %H = "Reading things from user" | call -header | begtype
  178.   In order to get input from the user, there are two available commands,
  179. READ and INKEY.
  180.  
  181.   When the command word READ is seen in the batch file, an input line is
  182. accepted from the user.  All function keys are assigned to the normal DOS
  183. edit functions.  When ENTER is pressed, the input line is assigned to DOS
  184. variables.
  185.  
  186.   Each word will be assigned in order to the variables indicated after the
  187. READ command.  When there are no more variables after the READ command to
  188. assign, the remainder of the response is thrown away.  If there are more
  189. variables to be assigned after the READ command than there are words from
  190. the user, these variables will be cleared out to a empty state.  For
  191. example:
  192.  
  193.     BAT READ Please enter your name ==> %1 %2
  194.  
  195.   This would prompt the user and wait for him to enter two words.  These
  196. words will be saved in the %1 and %2 variables.
  197. end
  198.      goto -scroll
  199. -line701 call -header | begtype
  200.  
  201.   Note that there does not have to be any variables indicated after the
  202. command READ.  In this case, BAT would wait for the enter key, throw away
  203. any response, then continue to process the next batch file command.
  204.  
  205. end
  206.     goto -scroll
  207. -line702 call -header | begtype
  208.  
  209.   In the event that you wish to get a single keystroke from the user, the
  210. INKEY command should be used.
  211.  
  212.   This command will wait for the user to enter a single key on the keyboard
  213. and return its value in the optional variable.    This key can be not only
  214. letters, but all function keys, control keys, etc.  For example:
  215.  
  216.     BAT INKEY Press any key to continue... %0
  217.  
  218.   When the user presses a single key, that key is saved into the variable %0.
  219.  
  220.   If the key that is pressed is in the range of "!" to "z" (decimal 33 to
  221. 122) then the key saved to the optional variable. If you wish this key to be
  222. echoed to the display, you must specifically use the TYPE command.
  223.  
  224. end
  225.      goto -scroll
  226. -line799 %i = 703
  227. -line703 call -header | begtype
  228.  
  229.   If the key is not in the above range, then the key will be converted to
  230. the form "KEYxxx" where xxx is the hex value of the key.  Extended key
  231. codes will be in the range KEY100 to KEY1FF and nonextended key codes will
  232. be in the range KEY000 to KEY0FF.  Refer to Appendix G of the Basic manual
  233. for a complete description of the various assignments of key codes.
  234.  
  235.   The character does not have to be assigned to a variable.  If the
  236. variable name is not present following the command INKEY, the system will
  237. wait for any key to be pressed from the user, and then continue processing.
  238.  
  239. end
  240.     goto -scroll
  241. -line704
  242.     begtype
  243.  
  244.     \0fNOW IT'S YOUR TURN !!!\07
  245.  
  246.  
  247.   We wish to create a menu with several options.  At a "\0f=>\07" prompt,
  248. the user must enter a \0fsingle letter\07 to select his option.  What is
  249. the command needed to request a single keystroke into the \0f%4\07
  250. variable for option selection using the prompt above?
  251.  
  252. end
  253.      %A = "BAT INKEY => %4" | call -tryit
  254. -opt8     %i = 800
  255. -line800 %H = "Program Control" | call -header| begtype
  256.   There are several ways of controlling the order of execution of a program
  257. written with Extended Batch Language.  GOTO, CALL, RETURN, and IF are all
  258. commands that do this.    The simplest is the GOTO command:
  259.  
  260.     BAT GOTO -LABEL
  261.  
  262.   If this line is put into a ".BAT" file, then it will stop execution at
  263. this line and resume at the line within the file which contains:
  264.  
  265.     BAT -LABEL
  266.  
  267.   This is a unconditional branch.  If the label is not present within the
  268. file, and error will result.  Note the minus (-) sign before the label
  269. name.  \0FLabels must be preceded with a minus sign.\07 This is done so
  270. that BAT can tell the difference between a label and a command within the
  271. language.
  272. end
  273.     goto -scroll
  274. -line801 call -header | begtype
  275.  
  276.    A CALL command is similar to a GOTO command.  The primary difference is
  277. that the line where the CALL command was is saved away.  Then a branch to a
  278. label is done, just like the GOTO command.  Note that the CALL command can
  279. be nested up to 31 levels.  When a RETURN command is found, the last line
  280. that was saved is now restored.  Execution resumes at the line following
  281. the original CALL command.
  282.  
  283. end
  284.     goto -scroll
  285. -line802 call -header | begtype
  286. For example, if a program contains:
  287.  
  288.     BAT    TYPE One
  289.     BAT    \0FCALL -LABEL\07
  290.     BAT    \0FCALL -LABEL\07
  291.     BAT    TYPE Four
  292.     BAT    EXIT
  293.     BAT -LABEL
  294.     BAT    TYPE Two
  295.     BAT    TYPE Three
  296.     BAT    \0FRETURN\07
  297.  
  298.   You will see on the display:
  299.     One
  300.     Two
  301.     Three
  302.     Two
  303.     Three
  304.     Four
  305. end
  306.     goto -scroll
  307. -line803 call -header | begtype
  308.   The final way to control the flow of an Extended Batch Language program
  309. is to use an IF command.  The general form of this command is:
  310.  
  311.     BAT IF _word_    _condition_   _word_   _operation_______
  312.  
  313.  
  314.   Each word can be a fixed string of letters, or a variable, or a
  315. combination of each.
  316.  
  317.   The conditions can be:
  318.  
  319.     <    less than
  320.     >    greater than
  321.     <>    not equal to
  322.     =    equal to (case insensitive)
  323.     ==    exactly equal to (case sensitive)
  324.  
  325.   The operation can be any of the Extended Batch Language commands.
  326. end
  327.      goto -scroll
  328. -line899 %i = 804
  329. -line804 call -header | begtype
  330.   For example, all of the following IF statements will compare correctly
  331. and execute their corresponding TYPE command.  The first two statements
  332. will initialize variables used in the IF commands.
  333.  
  334.     BAT %1 = ABC
  335.     BAT %2 =
  336.  
  337.     BAT IF ABC = %1  TYPE The variable contains ABC.
  338.     BAT IF %1 = abc  TYPE This also matches.
  339.     BAT IF 0 <> 00     TYPE These are different lengths.
  340.     BAT IF 0 < 00     TYPE 0 has a smaller length.
  341.     BAT IF 456 > 123 TYPE Numerically, 456 is bigger.
  342.     BAT IF 456 < %1  TYPE ASCII value of 456 is smaller.
  343.     BAT IF AABCD = A%1D TYPE Token substitutions are made.
  344.     BAT IF %2 <> %1  TYPE Variables are different lengths.
  345.     BAT IF .%2 = .     TYPE This matches if var is empty.
  346.     BAT IF BOX = BOX IF DOG <> CAT TYPE Did multi-if compare.
  347.     BAT IF 1 + 2 = 3 TYPE Arithmetic results match.
  348. end
  349.     goto -scroll
  350. -line805
  351.     begtype
  352.  
  353.     \0fNOW IT'S YOUR TURN !!!\07
  354.  
  355.  
  356.   We wish to make a series of tests on a menu option that a user entered.
  357. It is saved in the variable \0f%4\07.  What command is needed to test for
  358. the letter "\0fA\07"?
  359.  
  360. end
  361.      %A = "BAT IF %4 = A" | call -tryit
  362. -opt9     %i = 900
  363. -line900 %H = "KEYBOARD STACK" | call -header| begtype
  364.   There is a method within the BAT language for answering questions from
  365. programs without operator intervention.  This is done by a "keyboard
  366. stack".  By entering data into the stack, you will essentially be entering
  367. data through your keyboard when any program requests it.  In this way, a
  368. batch file can now answer questions programs may have by 'typing' them for
  369. the user.
  370.  
  371.   The keyboard stack operates in a "first-in first-out" basis.  That is,
  372. the first line of text put into the stack will be the first seen by the
  373. program when it reads the keyboard.  The second line entered will be the
  374. second seen by the program, and so on.    As long as there is text remaining
  375. on the stack, ALL requests for data from the keyboard will actually come
  376. from the stack.  Once the stack has been emptied by the program, data will
  377. then come from the keyboard as usual.
  378.  
  379.   There are two commands which store data into the stack, STACK and
  380. BEGSTACK. Here's some more about them.....
  381. end
  382.      goto -scroll
  383. -line901 call -header | begtype
  384.   The STACK command is very much like the previously mentioned TYPE
  385. command.  Instead of displaying to the screen, it will "push" data into the
  386. keyboard stack area.  When any program is ready to accept information from
  387. the keyboard, the parameters after the STACK command will be used as input.
  388. For example:
  389.  
  390.     BAT * This program will issue remarks to DOS.
  391.     BAT %1 = HELLO
  392.     BAT STACK REM THIS IS A REMARK FOR DOS
  393.     BAT STACK REM VARIABLE %%1 = %1
  394.  
  395. When executed, the following will appear on the screen:
  396.  
  397.     A>REM THIS IS A REMARK FOR DOS
  398.  
  399.     A>REM VARIABLE %1 = HELLO
  400. end
  401.      goto -scroll
  402. -line902 call -header | begtype
  403.   The second command used to stack data is BEGSTACK.  This command is
  404. equivalent to BEGTYPE previously described.  It is useful for dumping large
  405. amounts of data to the stack area.  Although no parameter substitution is
  406. performed, there are several advantages to its use.
  407.  
  408.   First, if a line ends with the ";" (semicolon) character, a carriage
  409. return will NOT be stacked.  Second, if "\\HEX" is used where HEX is a
  410.  
  411. number from 01 to FE, then this exact keyboard value will be stacked.  This
  412. is useful for stacking special control characters and symbols.    Third, if
  413. "\\00\\HEX" is used, an extended key code will be stacked.  This is useful
  414. for stacking function keys and the like.  Refer to the Basic manual in
  415. Appendix G under "Extended Codes".  Fourth, if \\FF\\HEX is used, the stack
  416. will delay the keyboard characters from appearing to the program for HEX
  417. number of CPU "ticks".  There are about 12 hex (18 decimal) ticks per
  418. second in the CPU.  In all cases, the word HEX above represents a two digit
  419. hexadecimal number. Finally, \\\\ can be used to stack a single backslash.
  420.  
  421. Some examples...
  422. end
  423.      goto -scroll
  424. -line903 call -header | begtype
  425. Some examples of BEGSTACK command::
  426.  
  427.     BAT BEGSTACK
  428.     \\09 Will stack the tab key.
  429.     This text will be stacked ; 
  430.         on one line!
  431.     \\00\\3B Will stack an F1 key.
  432.     \\\\ is seen as one backslash.
  433.     \\FF\\24 will pause two seconds.
  434.     end
  435.  
  436.  
  437. Hint: Some programs remove keystrokes before accepting a critical key. In
  438. some cases this can be avoided by using \\FF\\01 in the BEGSTACK command.
  439. end
  440.      goto -scroll
  441. -line904 call -header | begtype
  442. Note that in the above examples, the STACK or BEGSTACK commands always are
  443. \0fbefore\07 the command or program that will be using the keystrokes. An
  444. example of this order is:
  445.  
  446.     BAT BEGSTACK
  447.     <<keystroke values needed by the program>>
  448.     END
  449.     <<program that will be controlled by the stack>>
  450.  
  451. An example of using the stack with the COPY command within DOS would be:
  452.  
  453.     BAT BEGSTACK
  454.     This text will be given to the copy command.
  455.     \\00\\3B An F1 key ends the copy.
  456.     END
  457.     COPY CON: result.txt
  458.  
  459. end
  460.      goto -scroll
  461. -line905 call -header | begtype
  462. There are also three control commands which are associated with the stack:
  463.  
  464. STACK.OFF     - Redirects data to come directly from
  465.         the physical keyboard. Does not remove
  466.         any data in the stack.
  467.  
  468. STACK.ON      - Directs data to come from the stack.
  469.         This is the default.
  470.  
  471. STACK.PURGE   - Removes any data from the stack and
  472.         keyboard buffers which are pending.
  473. end
  474.     goto -scroll
  475. -line999 %i = 906
  476. -line906
  477.     begtype
  478.  
  479.     \0fNOW IT'S YOUR TURN !!!\07
  480.  
  481.  
  482.   From our menu, we wish to start up a communications program and
  483. automatically dial a phone number with a smartmodem.  The communications
  484. program we have will take what is typed on the keyboard and send it to the
  485. modem.    The command needed for the modem to dial our phone is
  486. "\0fATD12\07" .  What Extended Batch Language command will force the
  487. communication program to dial this modem command?
  488.  
  489. end
  490.     %A = "BAT STACK ATD12" | call -tryit
  491. -opt10    %i = 1000
  492. -line1000 %H = "GETTING RESULTS!" | call -header | begtype
  493.   The results of programs often need to be known so that some action can
  494. take place after the program ends.
  495.  
  496.   When the command word READSCRN is seen in the batch file, a line of text
  497. is read from the display screen into variables.  Having the ability to read
  498. text from the display can be useful for determining the result of another
  499. program, or making a query for some system status which would not normally
  500. be available within a batch file.  For example, by reading a directory from
  501. the screen, a series of files can be submitted to the macro assembler.
  502. Once the assembly is completed, the status can be read from the screen to
  503. determine if there were errors which would stop the link step.    Virtually
  504. any message which a program can generate can be used as feedback to a batch
  505. file by using READSCRN.
  506. end
  507.       goto -scroll
  508. -line1001 call -header | begtype
  509.   Its operation is very much like the READ command except for the fact that
  510. the information which is being read is coming from the display screen and
  511. not the keyboard.  Like the READ command, the text from the screen is
  512. tokenized (separated at word boundaries and assigned to variables).  The
  513. return code %R will be reflect the line number on the display that was
  514. read.  This number will be in the range of 1 to 25 for the top to bottom
  515. lines respectively. Once a line is read, this command will be set to read
  516. the previous line. Repeated READSCRN commands will read UP the display!
  517.  
  518. For example:
  519.     BAT CLS
  520.     BAT TYPE HELLO THERE
  521.     BAT READSCRN %A %B %C
  522.  
  523. After execution:
  524.     %A contains HELLO
  525.     %B contains THERE
  526.     %C contains nothing, it is empty.
  527.     %R (return code) contains 1, the line number that was read.
  528. end
  529.       goto -scroll
  530. -line1099 %i = 1002
  531. -line1002
  532.     begtype
  533.  
  534.     \0fNOW IT'S YOUR TURN !!!\07
  535.  
  536.  
  537.   From our menu, we have started the IBM Macro Assembler program.  We know
  538. that when this program ends, it will display a number representing the
  539. number of errors that were found.  We want to make sure that this number is
  540. zero before continuing to the LINK program.  If we save this number in the
  541. variable \0f%A\07, what is the command to read the assembler result from
  542. the display?
  543.  
  544. end
  545.       %A = "BAT READSCRN %A" | call -tryit
  546. -opt11      %i = 1100
  547. -line1100 %H = ASSIGNMENTS     | call -header| begtype
  548.   If the first character in the command is a '%' (Percent sign), then it is
  549. considered to be an assignment statement.  The first variable cannot be any
  550. predefined variable (such as %R or %%), but may be any of the other
  551. variables %0 to %9 and %A to %O.  If a DOS command is later executed and
  552. uses one of the variables %0 to %9, it will be properly replaced with the
  553. contents of that variable.
  554.  
  555. The first assignment token, the operator, and the final tokens are optional.
  556. The assignment statement must appear in one of the following forms:
  557.  
  558. \0f[var] =                      \07- create empty variable
  559. \0f[var] = [string]        \07- simple assignment
  560. \0f[var] = [number] + [number]    \07- addition
  561. \0f[var] = [number] - [number]    \07- subtraction
  562. \0f[var] = [number] * [number]    \07- multiplication
  563. \0f[var] = [number] / [number]    \07- division
  564. \0f[var] = [string] #        \07- string length
  565. \0f[var] = [string] $ [index] [length] \07- create substring (like MID$ in BASIC)
  566. end
  567.     goto -scroll
  568. -line1199 %i = 1101
  569. -line1101 call -header | begtype
  570.   \0f[var]\07 - A DOS variable or global user variable %0 to %9 and %A to
  571. %O.  It may not be a predefined variable.
  572.  
  573.   \0f[string]\07 - Any valid token.  Letters, numbers, any variable, or any
  574. combination there of.  123, ABC, and 987%J4SF are all valid strings.
  575.  
  576.   \0f[number]\07 - Any token with a numeric result in the range of ± 2**64.
  577. For example (if %A contains 34) the three numbers 98, %A, and 12%A5
  578. (equivalent to 12345) would all be valid numbers.
  579.  
  580.   \0f[index]\07 - Same restrictions as [number] above except that an
  581. [index] above 16 is meaningless and is equivalent to the number 16.
  582.  
  583.   \0f[length]\07 - Same restrictions as [number] above except that a
  584. [length] above 15 is meaningless and is equivalent to the number 15.  Note
  585. that [length] is optional and has a default value of 15.
  586.  
  587. end
  588.     goto -scroll
  589. -line1102
  590.     begtype
  591.  
  592.     \0fNOW IT'S YOUR TURN !!!\07
  593.  
  594.  
  595.   We wish to count the number of times that a user has used a certain .BAT
  596. program.  We will keep this count in the global user variable \0f%A\07
  597. which will stay active even BETWEEN batch file execution.  What is the
  598. command needed to increase the value in this variable by one?
  599.  
  600. end
  601.     %A = "BAT %A = %A + 1" | call -tryit
  602. -opt12
  603. -line1103
  604. -line1299 %i = 1200
  605. -line1200 %H = "DEBUGGING AIDS" | call -header| begtype
  606.   As an aid in debugging, the TRACE.ON command enables a trace flag which
  607. causes each line in the BAT program to be printed as it is executed.  Three
  608. '+' (plus) symbols will precede the BAT statement which is printed out as
  609. an aid.  The trace can be turned off at any time by the TRACE.OFF command.
  610.  
  611.   A trace can be active during DOS commands within the BAT program.  In
  612. addition, trace can be enabled/disabled at any time, even in immediate
  613. mode.  Once enabled, it will remain in effect until the TRACE.OFF command
  614. is executed.  Errors, execution of other BAT language files, and even
  615. executing DOS commands will not change the trace mode.
  616. end
  617.       goto -scroll
  618. -opt13
  619. -line1201 %i = 1300
  620. -line1300 %H = "External Functions" | call -header| begtype
  621. External functions give Extended Batch Language additional capabilities.
  622. They are programs that add new commands within the EBL language. Within
  623. these external functions are helpful routines in writing complex EBL
  624. programs. Generally, you will be able to write almost all of your EBL
  625. programs without these functions. Occationally there may be some special
  626. need for a unique operation that is not part of the commands built into
  627. Extended Batch Language. This set of external functions can therefore be
  628. added to EBL as needed.
  629.  
  630. To use any of these functions, just enter the name of the external function
  631. package from DOS or put the name of the package within your AUTOEXEC.BAT
  632. file.  Your batch files can then have any of the additional capabilities
  633. that are contained within the function package.
  634. end
  635.     goto -scroll
  636. -line1301 call -header | begtype
  637. \0eProvided to non-commercial users to share and copy:\07
  638.  
  639.   \0fBATFUNC1\07  contains    CENTER, CHDIR, DATE, GETDIR, KEYPRESSED, LEFT,
  640.             LOWER, LOCATE, RIGHT, STRIP, TIME, UPPER, WHATFUNC
  641.  
  642. \0eProvided to registered users only:\07
  643.  
  644.   \0fBATFUNC2\07  contains    C2H, D2H, H2C, H2D, INT86, PEEK, POKE, REBOOT,
  645.             WHATFUNC
  646.  
  647.   \0fBATMATH3\07  contains    FLOAT, ABS, FRAC, INT, WHATFUNC
  648.  
  649.   \0fBATALLF\07   contains    all of above functions within one package.
  650.  
  651.   \0fBATXV\07        contains    Extended Variables. Allows almost unlimited
  652.             variable space. Also allows flexable variable
  653.             names, indexing, and array capabilities.
  654.  
  655.   Source code to all external functions is also provided to all registered
  656.   users.
  657. end
  658.       goto -scroll
  659. -line1302 call -header | begtype
  660. A summary of the commands provided within BATFUNC1.COM are:
  661.  
  662.   CENTER( string i [pad] )    - Centers a 'string' within an 'i' field
  663.   CHDIR directory        - Changes sub-directory to 'directory'
  664.   DATE()            - Returns the system date
  665.   GETDIR()            - Returns the current subdirectory
  666.   KEYPRESSED()            - Returns "T" if any key is pressed
  667.   LEFT( string i [pad] )    - Left justifies 'string' within 'i' field
  668.   LOWER( string )        - Returns 'string' in lower case
  669.   LOCATE x y            - Move cursor to new position x y
  670.   RIGHT( string i [pad] )    - Right justifies 'string' within 'i' field
  671.   STRIP( string [type [char]] ) - Removes blanks or 'char' from 'string'
  672.   TIME()            - Returns the system time
  673.   UPPER( string )        - Returns 'string' in upper case
  674.   WHATFUNC()            - Returns the names of the functions loaded
  675.  
  676. Complete details of each function, including examples, can be found in the
  677. Extended Batch Language Version 3 Users Guide starting on page 163.
  678. end
  679.       goto -scroll
  680. -line1399 %i = 1303
  681. -line1303 call -header | begtype
  682. These functions can be used any place a variable or other values can be used.
  683. For instance, they can be used in an expression:
  684.  
  685.     BAT %A = LEFT( %B 8 )
  686.  
  687. They can be used in a condition statement:
  688.  
  689.     BAT IF KEYPRESSED() = T THEN GOTO -HAD.KEY
  690.  
  691. Or they can be used in combination with each other:
  692.  
  693.     BAT TYPE The hour is now: LEFT( TIME() 2 )
  694.  
  695. In general, external functions can be very powerful additions to Extended Batch
  696. Language. Registered users receive details of how to add their own custom
  697. additions using external functions. The BAT-BBS will be the repository for all
  698. new functions from other users.
  699. end
  700.       goto -scroll
  701. -opt14
  702. -line1304 %i = 1400
  703. -line1400 %H = "Additional Information" | call -header| begtype
  704.   The size of the keyboard stack defaults to 1024 bytes.  This value can be
  705. changed by making the first statement which is executed by the Extended
  706. Batch Language program be of the form:    BAT * size.  Size is the decimal
  707. number of bytes to reserve for the stack.  This must be executed, for
  708. instance, when a system reset is performed because once this area is
  709. installed, the size is never altered until another system reset.
  710.  
  711.   There are additional variables %A thru %O (oh) which are called "global
  712. user variables".  These variables are used exactly like the variables
  713. supplied by DOS (%0 to %9) with two exceptions.  First, the contents of
  714. these variables are maintained between execution of batch files for as long
  715. as the system is powered on.  This "global" feature is useful for keeping
  716. indicators BETWEEN "sessions" of the user.  Second, because DOS does not
  717. know about these variables, they \0fcannot\07 be used as variables within
  718. any DOS command.  So while "COPY %1 %2" is valid, "COPY %A %B" is not.  If
  719. you wish to use them within DOS commands, they must first be copied via a
  720. statement like "BAT %1 = %A".
  721. end
  722.       goto -scroll
  723. -line1401 call -header | begtype
  724.   PREDEFINED VARIABLES...
  725.  
  726.   A return code is available at memory address [0000:04FE].  If set by a
  727. program, BAT can read this byte value with the variable %R.  The string
  728. stored into this variable is in hex with leading zeros truncated.
  729.  
  730.   The current default drive is stored into the %V variable.  It is a single
  731. character.
  732.  
  733.   The status of the stack is stored into the %Q variable.  It is a "K" if
  734. the READ command will be reading from the keyboard, and a "S" if it will be
  735. reading from the stack area.
  736.  
  737.   There are two character literals.  %S represents a space literal and %%
  738. represents a percent sign.  Either of these special variables can be stored
  739. into other variables, or used for testing special cases.
  740. end
  741.       goto -scroll
  742. -line1402 call -header | begtype
  743. The STATEOF command will search all disk drives for the existence of a file.
  744. The name after the word STATEOF can be a specific name, general name with
  745. wildcard characters (e.g. *.EXE), or it can be a name with a specific drive
  746. specification (e.g. A:PE.EXE). In the last case, only drive A: will be
  747. searched instead of all available drives. Note also that a variable can be
  748. used instead of a file name. In this version of BAT, only files in the
  749. current directory (no paths) can be found.
  750.  
  751. The return code variable %R is used to indicate the result of the search
  752. for STATEOF. The results are:
  753.  
  754.     0 - File found on default drive.
  755.     1 - File not found.
  756.     9 - Invalid file name specified.
  757.     A to D - Same as return code 0 but instead of being found on the
  758.         default drive, it was found on drive A, B, C, or D.
  759. end
  760.       goto -scroll
  761. -line1403 call -header | begtype
  762.   If a you wish to put more than one command on a line, the vertical bar
  763. "|" is useful.  When used with an IF command and the test for the IF
  764. conditions fail, the entire rest of the line will be ignored.  Multiple
  765. commands within a BAT statement is very useful when combined with the IF
  766. command.  For example:
  767.  
  768.     BAT IF %A = abc TYPE this | CALL -that | GOTO -other
  769.  
  770.   If a comment is needed within a BAT program, the "*" (star) character is
  771. useful.  When used after the word BAT, all characters which follow will be
  772. ignored.  For example:
  773.  
  774.     BAT * This is a comment to the programmer.
  775. end
  776.       goto -scroll
  777. -line1404 call -header | begtype
  778.   That's about all the help there is!
  779.  
  780. If you still need more information, you might wish to call the BAT-BBS
  781. hotline at 305/392-2046.  Please consult section 3 of this document for
  782. further information on how to do this.
  783.  
  784. Fully registered users will receive a password to the BAT-BBS hot-line to
  785. allow them to get updates, ask questions, and get helpful tips and
  786. examples.  You will also receive many EBL extensions including source code,
  787. examples and samples of all kinds.  In addition, the manual they receive
  788. gives complete descriptions on all available commands with examples of
  789. each.  We feel that user supported software should be a two way street.
  790. With your help, it will work.
  791.  
  792. If you find this program of value, you may purchase it for $49 at the
  793. address below.    For further information, see section 2 of this document.
  794.  
  795.  Seaware Corp.                              305/392-2046
  796.  Post Office Box 1656                          800/622-4070
  797.  Delray Beach, FL 33444             (800/942-7317 in Illinois)
  798. end
  799.     goto -scroll
  800.  
  801. -on.error-
  802.     %e = %e + 1 | if %e > 2 then %L = ? | skip 4
  803.     if %R <> 6 then skip 2
  804.     %G = .goto.
  805.     color 8f |type Loading part 1 ...
  806.     batdoc
  807.  
  808. begtype
  809.  
  810.      Unexpected error \%R in line \%L !
  811.  
  812.      This batch file was error free when it was distributed
  813.      by Seaware. An error indicates that it was most likely
  814.      modified by someone improperly. To get an updated demo
  815.      diskette send $10 to Seaware directly or call 800/622-4070
  816.      or 800/942-7317 in Illinois.
  817.  
  818.  
  819.             Seaware Corp.
  820.              Post Office Box 1656
  821.             Delray Beach, FL 33444
  822. end
  823. %G =
  824. %E = 0
  825. exit
  826.